package com.prd.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 工作联络单数据表
 * </p>
 *
 * @author lizhaoyi
 * @since 2023-11-06
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WorkContactFormDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("主键id")
    private Long id;

    /**
     * 发起人
     */
    @ApiModelProperty("发起人")
    private String promoter;

    /**
     * 发起人id
     */
    @ApiModelProperty("发起人id")
    private String promoterId;

    /**
     * 接收人id
     */
    @ApiModelProperty("接收人id")
    private String receiverId;

    /**
     * 接收人
     */
    @ApiModelProperty("接收人")
    private String receiver;

    /**
     * 要求完成时间
     */
    @ApiModelProperty("要求完成时间")
    private Date requiredFinishTime;

    /**
     * 重要程度0-一般;1-重要;2-极其重要
     */
    @ApiModelProperty("重要程度0-一般;1-重要;2-极其重要")
    private Integer importance;

    /**
     * 绩效维度0-内部运营1-客户2-财务3-学习与成长
     */
    @ApiModelProperty("绩效维度0-内部运营1-客户2-财务3-学习与成长")
    private String performanceDimension;

    /**
     * 事项主题
     */
    @ApiModelProperty("事项主题")
    private String title;

    /**
     * 制单人
     */
    @ApiModelProperty("制单人")
    private String createdWorkFormBy;

    /**
     * 制单人id
     */
    @ApiModelProperty("制单人id")
    private Long createdWorkFormId;

    /**
     * 执行人
     */
    @ApiModelProperty("执行人")
    private String executeBy;

    /**
     * 执行人id
     */
    @ApiModelProperty("执行人id")
    private Long executeId;

    /**
     * 督导人
     */
    @ApiModelProperty("督导人")
    private String watchBy;

    /**
     * 督导人id
     */
    @ApiModelProperty("督导人id")
    private Long watchId;

    /**
     * 执行负责人
     */
    @ApiModelProperty("执行负责人")
    private String leaderExecuteBy;

    /**
     * 执行负责人id
     */
    @ApiModelProperty("执行负责人id")
    private Long leaderExecuteId;

    /**
     * 督导负责人
     */
    @ApiModelProperty("督导负责人")
    private String leaderWatchBy;

    /**
     * 督导负责人id
     */
    @ApiModelProperty("督导负责人id")
    private Long leaderWatchId;

    /**
     * 预决算督导
     */
    @ApiModelProperty("预决算督导")
    private String budgetWatchBy;

    /**
     * 预决算督导id
     */
    @ApiModelProperty("预决算督导id")
    private Long budgetWatchId;

    /**
     * 抄送
     */
    @ApiModelProperty("抄送")
    private String ccTo;

    /**
     * 工作联络单状态0-草稿1-我发起的2-我接受的3-我制单的4-执行中5-重新执行6-预完成7-已完成8-已撤销
     */
    @ApiModelProperty("工作联络单状态0-草稿1-我发起的2-我接受的3-我制单的4-执行中5-重新执行6-预完成7-已完成8-已撤销")
    private Integer formStatus;

    /**
     * 所有工作要点关联id
     */
    @ApiModelProperty("所有工作要点关联id")
    private String workPointId;

    /**
     * 所有预算记录关联id
     */
    @ApiModelProperty("所有预算记录关联id")
    private String workInputId;

    /**
     * 时间节点关联id
     */
    @ApiModelProperty("时间节点关联id")
    private Long workTimeNodeId;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createdTime;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private String createdBy;

    /**
     * 创建人id
     */
    @ApiModelProperty("创建人id")
    private Integer createdById;

    private WorkPointRecordDTO workPointRecordDTO;

    private List<WorkPointRecordDTO> workPointRecordDTOList;

    private WorkInputRecordDTO workInputRecordDTO;

    private List<WorkInputRecordDTO> workInputRecordDTOList;

    private WorkTimeNodeRecordDTO workTimeNodeRecordDTO;

    private List<WorkTimeNodeRecordDTO> workTimeNodeRecordDTOList;


}
